Distributed ledgers provided in peer-to-peer systems, such as the blockchain used in the Bitcoin cryptocurrency system, rely on public/private cryptographic key pairs for the signing of transactions that transfer credits of commercial value between entities. In such systems, participants generate their own public/private key pairs, and use the private key of the pair to sign transfers of the credits of commercial value from an address associated with the public key of the pair to an address associated with a public key of a different pair.
There are many proposed uses for distributed ledgers, such as vote tallying US20160027229, health care transactions US20150332283, and allowing access to property for rent US20160086175. These and any other applications rely on the same use of public/private key pairs.
A problem with such distributed ledger systems is that a valid address associated with a public key can be generated without knowing a private key that is used to construct the public key. If no entity knows the private key, then any credits transferred to the address associated with the public key are unredeemable.
Another problem in systems such as Bitcoin is that the public key associated with the private key 0 is a valid key for transferring credits to, but the credits can never be redeemed. Due to the structure of the asymmetric key system used (the Elliptic Curve Digital Signature Algorithm, or ECDSA), credit transfer messages cannot be signed with a private key 0. As a result, this public key currently holds a significant level of unredeemable credits. Computer programming errors can result in the accidental generation of a private key 0 rather than a valid private key, and subsequent accidental crediting of the public key, resulting in a permanent loss of the credits.
A further problem is that a consortium of entities using a shared ledger or blockchain may wish to bar a specific entity from participating in the use of the shared ledger.
All the aforementioned problems could be overcome in part by the use of key revocation methods and systems, as detailed in US20150149089, in order to prevent the addition to the distributed ledger of any transactions referring to the address associated with a revoked public key. This, however, does not resolve the problem where, for example, a new public key is created in error and used to generate an address, which is subsequently credited with unredeemable credits before the new public key can be revoked.
It is the intention of the present invention to address the shortcomings of the prior art, that is, the problem of preventing the transfer of credits of commercial value or the transmission of messages to an address associated with a public key for which a private key is unknown to any entity.